相关疑难解决方法(0)

点(".")运算符和箭头(" - >")运算符用于C与Objective-C

我试图围绕C与Objective-C中的使用和语法的一些差异.特别是,我想知道C运算符和Objective-C中的点运算符和箭头运算符的使用方式有何不同(以及原因).这是一个简单的例子.

C代码:

// declare a pointer to a Fraction
struct Fraction *frac;

...

// reference an 'instance' variable
int n = (*frac).numerator;     // these two expressions
int n = frac->numerator;       // are equivalent
Run Code Online (Sandbox Code Playgroud)

Objective-C代码:

// declare a pointer to a Fraction
Fraction *frac = [[Fraction alloc] init];

...

// reference an instance variable
int n = frac.numerator;        // why isn't this (*frac).numerator or frac->numerator??
Run Code Online (Sandbox Code Playgroud)

那么,看看frac两个程序中的相同情况(即它是指向Fraction对象或结构的指针),为什么它们在访问属性时使用不同的语法?特别是,在C中,numerator可以访问属性frac->numerator,但是使用Objective-C,可以使用点运算符访问它frac.numerator.既然frac是两个程序中的指针,为什么这些表达式不同?任何人都可以帮我澄清一下吗?

c pointers objective-c dot-operator

61
推荐指数
3
解决办法
5万
查看次数

object_setClass()的性能而不是指定isa指针

我注意到了对XCode(4.6)的最新更新,我收到了关于几行的警告JSONKit.m.特别是,设置对象类的行:

dictionary->isa = _JKDictionaryClass;
Run Code Online (Sandbox Code Playgroud)

这些标记为已弃用,并注明首选方法是使用object_setClass():

object_setClass(dictionary, _JKDictionaryClass);
Run Code Online (Sandbox Code Playgroud)

当我问为什么最好只是让警告静音时,回答是:

即使新的Xcode版本抱怨,一切都运行正常,我不想:
1)测试每个项目我使用JSONKit来检查在object_setClass()后是否一切正常
2)松散的cpu周期,这就是我使用JSONKit的原因以NSJSONSerialization为例.我当前的应用程序解析权重为600K-1M的json文件

我们在这里讨论了多少性能影响?

注意:

我更感兴趣

dictionary->isa = _JKDictionaryClass VS object_setClass()

JSONKitVS NSJSONSerialization.

objective-c objective-c-runtime ios jsonkit

2
推荐指数
1
解决办法
1396
查看次数