繁体   English   中英

在开发iOs / OsX应用程序时使用Objective C的优雅方法?

[英]Elegant ways to use Objective C while developing an iOs / OsX application?

我已经开发iOs和OsX应用程序已有几个月了,但仍然感觉我做错了什么。 我尝试遵守准则,并尽可能使用Apple提供的对象。 但是似乎它们使我的代码很难理解。

例:

当我只想“增加”一个NSNumber对象(这是不可变的,但是您明白我的意思)时,我会使用如下尴尬的代码:

int value = [counter intValue];
counter = [NSNumber numberWithInt:value +1];

这真的有必要吗? 有没有更优雅的方法(例如i ++,inc(i)等)来做这样的简单事情? 尤其是在使用坐标时,它会变得非常令人沮丧且难以使用。

使用Objective CI时,感觉就像我一直在分配,取消分配和转换对象,并用所有这些转换浪费了我自己的时间和CPU时间。 感谢您的宝贵时间,我非常感谢您的答复,并期待您的光临!

以您的示例为例,将NSNumber用作计数器是否有任何特定原因? 使用int更好,这样您就可以使用value ++。

好的Objective-C代码的关键是在有意义的时候使用对象。 不要害怕使用非对象数据类型,不要害怕在需要时降级(不是最好的术语)到C。

就像@sosborn写道:仅在需要时才使用对象。 但是:当需要时,您仍然感到不对劲,那就不用了。 编写用于递增NSNumber的宏,使用ARC让编译器尽可能有效地为您执行内存管理,等等。如果您确实担心时间,请对时间紧迫的任务使用C或汇编,或者如果需要OO则使用C ++ 。

P.s.:NSNumber增量宏:

#define NSNUM_INC(n) do { n = [NSNumber numberWithInt:[n intValue] + 1]; } while (0);

您可以为NSNumber编写类别,以实现所需的方法。 对于您的示例,类别文件包含以下功能:

-(NSNumber *)numberByAddingInt:(int)i
{
...
}

包含此文件,然后可以将其称为:

counter = [counter numberByAddingInt:1];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM