2011-02-16 64 views
2

我有一個自定義的視圖,我從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 
+0

@Joe你可以,但不建議。如果`nary`是一個包含格式說明符的字符串(如`%@`),那麼`NSLog()`將嘗試讀取堆棧中不是實際對象的數據,您可能會崩潰。但它仍然*可能*。 – 2011-02-16 22:36:07

+0

NSLog只是爲了檢查它我可以看到數組中的數據(我可以),所以它不會在代碼中,但沒有來自NSLog – Martin 2011-02-16 22:41:06

+0

的錯誤我正在使用另一臺PC作爲郵件。但不是現在/ Users/martinstave/Documents/windowIpadOne /../../下載/ iPhoneLine/MyView.m:134:0 /Users/martinstave/Documents/windowIpadOne/../../Downloads/iPhoneLine/MyView。 m:134:錯誤:嵌套函數被禁用,使用-fnested函數重新啓用 – Martin 2011-02-16 22:55:54

回答

1

的底線是,當你有一個非常糟糕的語法錯誤的「嵌套函數」的錯誤只是一個「普通」的錯誤你。

如忘記關閉括號。或者是一個流浪的操作員。

(編輯 - 事實上,在這種情況下,它是一隻流浪「*」運算符。)

它實際上沒有任何與「嵌套函數」(通常情況下),並且,該問題可能是幾乎任何地方在文件或甚至以前的文件中。

對不起,我不能發現錯字!

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

你需要一個星號:

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

此外,你應該很少直接登錄的對象。相反,使用格式字符串:

NSLog(@"%@", nary);