10. So, can we live in a pure Swi0
world?
@TachibanaKaoru, 2015 10
11. Unusable Swi- features in ObjC (1)
? Generics
? Tuples
? Enumera0ons de?ned in Swi7 without Int raw value type
? Structures de?ned in Swi7
? Top-level func0ons de?ned in Swi7
? Global Variables de?ned in Swi7
@TachibanaKaoru, 2015 11
12. Unusable Swi- features in ObjC (2)
? Typealiases de?ned in Swi0
? Swi0-style variadics
? Nested types
? Curried func:ons
? Protocol Extension (new from Swi02.0)
@TachibanaKaoru, 2015 12
13. These are not only unusable from ObjC
? これらの Swi&独自機能は「Objec,ve-Cからよべない」だけで
はない
? 実は、pure Swi& の project でもこの制限がかかる
@TachibanaKaoru, 2015 13
14. We cannot use them as a selector
? Objec've-Cでよべないものはselectorで指定することができな
い
? performselector 指定することもできない。
? Add-Target 指定することもできない。
@TachibanaKaoru, 2015 14
19. We cannot use Swi.-only features as a
selector
? 「Objec've-Cからよべないもの」は、selectorに指定できない
@TachibanaKaoru, 2015 19
20. What "usable from ObjC" means?
? 「Objec've-Cからよべる」とは?
? Swi. Compile 時に作成される Objec've-C member table に
入っているかどうか
@TachibanaKaoru, 2015 20
21. Objec&ve-C member table
? h#ps://github.com/apple/swi5/blob/master/lib/AST/
NameLookup.cpp
void ClassDecl::createObjCMethodLookup() {
assert(!ObjCMethodLookup && "Already have an Objective-C member table");
auto &ctx = getASTContext();
ObjCMethodLookup = new (ctx) ObjCMethodLookupTable();
// Register a cleanup with the ASTContext to call the lookup table
// destructor.
ctx.addCleanup([this]() {
this->ObjCMethodLookup->destroy();
});
}
@TachibanaKaoru, 2015 21
22. Is this method "usable
from ObjC" ?
? 実装時に、特定のメソッドが
Objec've-Cから使えるのかどうか確認
するのであれば、MyProject-Swi4.hで
確認しましょう
? ビルド時に中間生成物として作成さ
れています
? Xcodeでは右の方法で見ることがで
きます
@TachibanaKaoru, 2015 22