我有一个名为fontType的NSString
我正在尝试为它设置一个自定义设置器:
- (void) setFontType:(NSString *) fType
{
if (self.fontType != fType){
[fontType release];
self.fontType = [fType retain];
//some more custom code
}
}
这有什么问题吗?
答案 0 :(得分:4)
一些对我来说很突出的事情:
self.
。直接访问变量// some more custom code
我的个人风格偏好如下:
-(void)setFontType:(NSString *)fontType_ {
if (fontType == fontType_) return; // get out quick, flatten the code
[fontType release];
fontType = [fontType_ copy];
// some more code
}
Cocoa with Love在这个主题上有一个good article。值得一读。
答案 1 :(得分:0)
执行self.fontType = newFontType
时,您正在执行[self setFontType:newFontType]
(只是使用不同的语法),这意味着您正在调用自身内部的方法。
这称为递归,但在这种情况下,你没有一个基本情况,方法将停止调用自己,所以我的猜测是这个方法会调用自己,直到应用程序崩溃。简而言之,递归不是你想要的。
只需将self.fontType = [fType retain]
替换为fontType = [fType retain]
(假设链接到fontType属性的var也称为fontType)。
PS。在问题的最后你问了
这有什么问题吗?
如果你没有尝试这个,那么你甚至不应该在StackOverflow上问这个,如果你确实尝试过,那么你应该意识到这个方法不起作用,所以最后一行很漂亮无意义的。只是说。