一些iOS杂技术

这里会记录一些没用的iOS技术,但或许会是有趣的。

1.关于向前声明

为避免循环引用,C 语言有一个前向声明的机制,即仅仅告诉存在性,而不理会具体实现。C++ 使用 class 关键字实现前向声明。在 Objective-C 中则是使用@class关键字

用clang -rewrite-objc 查看后发现 OC语法解析后的C++代码并非使用class来前置声明一个类,而是 typedef struct objc_object Son;这种方式来声明Son类。所以我们完全可以用typedef struct objc_object MyClass;来代替@class.可是并不会有人这样做。

2.关于Objective-C 访问权限的一些事

在 Objective-C 中,只有成员数据可以是private,protected和public的,默认是protected。方法只能是public的。实际上在头文件声明一个方法和.m中是一样的,.m中使用分类机制(class categories)声明方法,虽然暂时隐藏方法,但是得益于 Objective-C 的动态性,我们可以用performSelector:

    Foo *foo = [Foo new];
    [foo performSelector:NSSelectorFromString(@"apple")];
    ////////////////////////////////////////////////////////////////////////////////////////
    @implementation Foo

    -(int) apple{
       return 10;
     }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。