在drawrect问题中不允许使用嵌套函数

时间:2011-02-16 22:30:00

标签: objective-c cocoa-touch

我有一个自定义视图,我从drawrect函数中绘制了一些图形,效果很好。

但是,我喜欢根据我在执行setNeedsDisplay之前传递视图的数组的争议来绘制。在drawRect函数中如果我使用带有drawRect的NSString或NSarray,我得到一个嵌套函数错误,我不明白?

这是我的代码:

//  MyView.h
#import <UIKit/UIKit.h>

@interface MyView : UIView {
 }
@end

//  MyView.m
#import "MyView.h"

@implementation MyView

CGContextRef c;

CGFloat black[4] = {0.0f, 0.0f, 0.0f, 1.0f};

- (id)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        // Initialization code
    }
    return self;
}

- (void)drawRect:(CGRect)rect {
    c = UIGraphicsGetCurrentContext();

    CGContextSetStrokeColor(c, black);

     //Gives a nested functions are disabled error at compiletime
     NSString nsz * = @"test";      
}

- (void)dealloc {
    [super dealloc];
}

@end

2 个答案:

答案 0 :(得分:1)

底线是“嵌套函数”错误只是您在语法错误时出现的“常规”错误。

例如忘记关闭支架。或者是一个迷路的操作员。

(编辑 - 实际上在这种情况下它是一个迷路'*'运算符。)

它实际上与“嵌套函数”(通常)无关,而且问题可能几乎在文件的任何位置,甚至是以前的文件。

抱歉,我无法发现拼写错误!

答案 1 :(得分:0)

@property (nonatomic, copy) NSArray nary;
NSArray ns = [nary objectAtIndex:0];

你需要一个星号:

@property (nonatomic, copy) NSArray *nary;
NSArray *ns = [nary objectAtIndex:0];

此外,您应该很少直接记录对象。而是使用格式字符串:

NSLog(@"%@", nary);