相关疑难解决方法(0)

在Objective-C中为类定义私有方法的最佳方法

我刚刚开始编写Objective-C编程,并且具有Java背景,想知道编写Objective-C程序的人如何处理私有方法.

我理解可能存在一些惯例和习惯,并将此问题视为人们在Objective-C中使用私有方法的最佳技术的聚合器.

请在发布时为您的方法添加一个参数.它为什么好?它有哪些缺点(你知道)以及你如何处理它们?


至于到目前为止我的发现.

可以使用MyClass.m文件中定义的类别 [例如MyClass(Private)]来对私有方法进行分组.

这种方法有两个问题:

  1. Xcode(和编译器?)不检查您是否在相应的@implementation块中定义私有类别中的所有方法
  2. 你必须把@interface声明你的私人类别在MyClass.m文件的开头,否则Xcode会抱怨"自己可能没有回复消息"privateFoo".

第一个问题可以解决空类 [例如MyClass()].
第二个困扰我很多.我希望在文件末尾附近实现(和定义)私有方法; 我不知道这是否可能.

cocoa objective-c code-completion

352
推荐指数
5
解决办法
17万
查看次数

我可以使用公共getter和private setter创建属性吗?

我想为我的实例变量使用属性,但在很多情况下,我只希望类本身可以访问setter.我希望我能做到这样的事情:

foo.h中:

@interface Foo {
  NSString *bar;
}
@property (readonly) NSString *bar;
@end
Run Code Online (Sandbox Code Playgroud)

Foo.m:

#import "Foo.h"

@interface Foo ()
@property (copy) NSString *bar;
@end

@implementation Foo
@synthesize bar;
@end
Run Code Online (Sandbox Code Playgroud)

但这会产生一个警告:

Foo.m:4: warning: property ‘bar’ attribute in ‘Foo’ class continuation does not match class ‘Foo’ property
Run Code Online (Sandbox Code Playgroud)

我可以看到它在抱怨什么,但它似乎仍然是一个有用的习语.有没有其他方法可以在不写自己的二传手的情况下实现这一目标?

iphone cocoa objective-c

14
推荐指数
1
解决办法
5630
查看次数

在Objective-C中,与.m文件相反,在头文件中定义内容(例如属性)有什么区别?

在Objective-C中,与.m文件相反,在头文件中定义内容(例如属性或方法)有什么区别?我听说它与将其公开或私有有关,但我不确定细节。如果是这样,这是否与Java中的公共方法和私有方法相同?

我精通Java,因此可以将Objective-C与Java关联的任何方式都会有所帮助。

谢谢

编辑:澄清一下,假设我有一个名为“ CalculatorBrain”的类(如果这是适当的术语),以下内容之间有什么区别(请注意NSMutableArray * operandStack:

在.m文件中:

 @interface CalculatorBrain()
 @property (nonatomic, strong) NSMutableArray *operandStack;
 @end
Run Code Online (Sandbox Code Playgroud)

与.h文件中的:

 @interface CalculatorBrain : NSObject
 @property (nonatomic, strong) NSMutableArray *operandStack;
 @end
Run Code Online (Sandbox Code Playgroud)

在定义NSMutableArray *的地方有什么区别?

objective-c

5
推荐指数
1
解决办法
1828
查看次数

在Objective-C中,为什么类继续可以添加实例变量但类类不能?

我知道我们不能在类类别中添加实例变量,但是我们可以添加类继续,可以有人告诉我为什么或给我一些关于它的细节.我知道我们可以在类别中使用关联,我想知道有关实现的详细信息.非常感谢 .

objective-c

4
推荐指数
1
解决办法
536
查看次数

标签 统计

objective-c ×4

cocoa ×2

code-completion ×1

iphone ×1