相关疑难解决方法(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万
查看次数

如何制作一个真正的私有实例变量?

我想创建一个无法从外部访问的实例变量.在objective-c中有可能是这样的吗?我记得Apple有私有变量和类似的东西,但如果人们知道它们,他们就可以使用它们.Apple称之为"私有API",但显然其他人可以访问那些东西,如果他们发现那里有什么.

到目前为止,我认为像这样的东西创建了一个私有实例变量:

@interface MyClass : NSObject {
    CGFloat weight;
}
Run Code Online (Sandbox Code Playgroud)

没有@property,没有@synthesize,只是上面的声明.

另外我知道Apple添加了一个_inFrontOfTheirPrivateInstanceVariables,但他们说某些地方他们不喜欢看到其他人这样做,因为他们可能会在执行此操作时覆盖意外隐藏的实例变量.

这里的诀窍是什么?

visibility private objective-c instance-variables

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

Objective-C:如何从子类访问父属性?

如果我定义了这个类,如何someObject在没有编译器错误的情况下访问子类中的属性?

@interface MyBaseClass
  // someObject property not declared here because I want it to be scoped 
  // protected. Only this class instance and subclass instances should be
  // able to see the someObject property.
@end

// This is a private interface extension...properties declared here
// won't be visible to subclasses. However, I don't see any way to 
// declare protected properties...
@interface MyBaseClass (private)
   @property (nonatomic, readwrite, retain) NSObject *someObject;
@end
Run Code Online (Sandbox Code Playgroud)

@interface MySubclass : MyBaseClass 
@end

@implementation MySubclass …
Run Code Online (Sandbox Code Playgroud)

oop cocoa cocoa-touch objective-c

45
推荐指数
2
解决办法
4万
查看次数

类方法也继承了吗?

当我定义一个继承自的新类时NSObject:

@interface Photo : NSObject
{
    NSString* caption;
    NSString* photographer;
}

@property NSString* caption;
@property NSString* photographer;

@end
Run Code Online (Sandbox Code Playgroud)

是新类继承的所有类方法(如alloc)吗?NSObjectPhoto

inheritance subclass objective-c class-method

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

什么时候在Objective-C中使用`self`?

现在已经超过5个月,我在Objective-C,我也在App Store发布了我的第一个应用程序,但我仍然怀疑该语言的核心功能.

什么时候我应该使用self访问iVars,当我不是?

在释放插座时,您self.outlet = nil在viewDidUnload中dealloc写入,而不是在您写入时[outlet release].为什么?

objective-c self

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

Objective-C中"@public"是什么意思?

在阅读了关于@private问题后,我明白了它是如何工作的.但是,由于所有变量都默认为@protected,并且在没有定义访问器的情况下无法真正访问变量,@public究竟做了什么?你什么时候用它?

iphone objective-c

3
推荐指数
1
解决办法
2061
查看次数