我不确定这个问题有多少用处,但对我来说似乎很有意思......
我认为使用property/synthesize语句等同于我创建getter/setter.因此
// .h
@property (nonatomic) BOOL on;
// .m
@synthesize on = _on;
// In my mind synthesizes the following methods
// - (BOOL)on;
// - (void)setOn:(BOOL)on;
Run Code Online (Sandbox Code Playgroud)
但是,如果我将声明更改为以下内容:
v
@property (nonatomic, getter=isOn) BOOL on;
@synthesize on = _on;
// In my mind synthesizes the following
// - (BOOL)isOn;
// - (void)setOn:(BOOL)on;
Run Code Online (Sandbox Code Playgroud)
然后给出上面的内容我覆盖了getter,所以我知道它何时被调用:
- (BOOL)isOn;
{
NSLog(@"I was called");
return _on;
}
Run Code Online (Sandbox Code Playgroud)
现在在实例(myClass)上调用以下内容会导致:
NSLog(@"%d", [myClass isOn]);
//=> 2012-02-09 22:18:04.818 Untitled[1569:707] I was called
//=> 2012-02-09 22:18:04.820 Untitled[1569:707] 1 …Run Code Online (Sandbox Code Playgroud) 我是一个Objective-C菜鸟,已经搜索了高低不能找到答案:
在我的RubyMotion项目中,我有一个名为StatusGuage的UIView子类,它包含一个名为drawLinearGradient的方法,如下所示:
def drawLinearGradient(context, rect, startColor, endColor)
colorspace = CGColorSpaceCreateDeviceRGB()
locations = [0.0, 1.0]
# colors = NSArray.arrayWithObjects(startColor, endColor, nil)
# ptrColors = Pointer.new(:object, colors)
colors = [startColor, endColor, nil]
# CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (CFArrayRef) colors, locations);
CGGradientCreateWithColors(colorspace, colors, locations)
end
Run Code Online (Sandbox Code Playgroud)
我想知道如何调用CGGradientCreateWithColors.它显然需要一个(CFArrayRef)指针,但我无法弄清楚如何传入它.我尝试过的迭代之一被注释掉了.
这是错误消息:
2012-05-11 16:57:36.331 HughesNetMeter[34906:17903]
*** Terminating app due to uncaught exception 'TypeError',
reason: 'status_guage.rb:43:in `drawLinearGradient:': expected
instance of Pointer, got `[0.0, 1.0]' (Array) (TypeError)
from status_guage.rb:13:in `drawRect:'
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
首先,Objective-C中没有名称空间,这是一回事.但是当一个项目的大小和文件增加,并且添加了UITableCellViews和其他子视图时,命名我的类往往会成为一个真正的痛苦.
例如,在表中使用名为EEMSystem的模型,我自然地命名自定义UITableViewCell的方式类似于EEMSystemTableViewCellController.m.这创建了很长的类名.
命名控制器,视图和模型是否有任何指导原则?你使用什么指南?