-1

まず第一に、私は IOS アプリの開発は初めてですが、Java の世界出身なので、C スタイルの言語には精通しています。この本http://books.google.kz/books/about/Foundation_iPhone_App_Development.html?id=68L0dC2Sl8IC&redir_esc=yに従って、IOS の開発を学習しています。私の問題は第9章からです。

最初の問題は、ビルドしようとすると、「Objective-C ポインター型 "UIColor" から C ポインター型 "GCColorRef" (別名 'struct CGColor *') への暗黙的な変換には、ブリッジされたキャストが必要です」と表示されます。コードは次のとおりです (エラー行はコメントでマークされています)。

#define kFontLightOnDarkTextColour [UIColor colorWithRed: 255.0/255 green:251.0/255 blue: 218.0/255 alpha:1.0];
#define kFontDarkOnLightTextColour [UIColor colorWithRed: 1.0/255 green:1.0/255 blue:1.0/255 alpha: 1.0];

#define kFontNavigationTextColour [UIColor colorWithRed: 106.f/255.f green:62.f/255.f blue:29.f/255.f alpha: 1.f];
#define kFontNavigationDisabledTextColour [UIColor colorWithRed: 106.f/255.f green: 62.f/255.f blue: 39.f/255.f alpha: 0.6f];
#define kNavigationButtonBackgroundColour [UIColor colorWithRed: 255.f/255.f green: 245.f/255.f blue: 225.f/255.f alpha: 1.f];
#define kToolbarButtonBackgroundColour [UIColor colorWithRed: 39.f/255.f green: 17.f/255.f blue: 5.f/255.f alpha: 1.f];
#define kLargeButtonTextColour [UIColor whiteColor];

#define kFontNavigation [UIFont fontWithName: @"HelveticaNeue-Bold" size:18.f];
#define kFontName [UIFont fontWithName: @"HelveticaNeue-Bold" size:30.f];
#define kFontBirthdayDate [UIFont fontWithName: @"HelveticaNeue" size:13.f];
#define kFontDaysUntilBirthday [UIFont fontWithName: @"HelveticaNeue-Bold" size:25.f];
#define kFontDaysUntilBirthdaySubText [UIFont fontWithName: @"HelveticaNeue" size:9.f];
#define kFontLarge [UIFont fontWithName: @"HelveticaNeue-Bold" size:17.f];
#define kFontButton [UIFont fontWithName: @"HelveticaNeue-Bold" size:30.f];
#define kFontNotes [UIFont fontWithName: @"HelveticaNeue" size:16.f];
#define kFontPicPhoto [UIFont fontWithName: @"HelveticaNeue-Bold" size:12.f];
#define kFontDropShadowColour [UIColor colorWithRed:1.0/255 green:1.0/255 blue:1.0/255 alpha:0.75];

+(void) styleLabel: (UILabel *)label withType:(TSKLabelType) labelType {
switch(labelType) {
    case TSKLabelTypeName:
        label.font = kFontName;
        label.layer.shadowColor = kFontDropShadowColour.CGColor;//error is here, when I try to use CGColor
        label.layer.shadowOffset = CGSizeMake(1.0f, 1.0f);
        label.layer.shadowRadius = 0.0f;
        label.layer.masksToBounds = NO;
        label.textColor = kFontLightOnDarkTextColour;
        break; }}

2 番目の問題のコードは次のとおりです。

+(void) initStyles {
NSDictionary* titleTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys: kFontNavigationTextColour, UITextAttributeTextColor, [UIColor whiteColor], UITextAttributeTextShadowColor, [NSValue valueWithUIOffset:UIOffsetMake(0, 2)], UITextAttributeTextShadowOffset, kFontNavigation, UITextAttributeFont, nil];
[[UINavigationBar appearance] setTitleTextAttributes:titleTextAttributes];
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigation-bar-background.png"] forBarMetrics:UIBarMetricsDefault];}

「titleTextAttributes」が定義されている行は、「kFontNavigation」const を参照して、「Expected ']'」と言っています。しかし、その行にはエラーはありません。代わりに、「kFontNavigationTextColour」の行に「Expected ']'」と表示されます。

これらの問題は何ですか?本に書かれているのと同じコードを書いて実行しています。おそらく問題はIDEまたはコンパイラにありますか?私の Xcode は 4.5.2 で、OS X Lion 10.7.5 です。

PS: すべての定数 (定義) と静的メソッドは 1 つのクラスで定義されます。

4

1 に答える 1

2

定数定義の末尾にあるセミコロンを削除します。

#define kFontNavigationTextColour [UIColor colorWithRed: 106.f/255.f green:62.f/255.f blue:29.f/255.f alpha: 1.f];

#define ステートメントには、末尾のセミコロンは必要ありません。それらを追加すると、コンパイラはそれらをマクロ変数に割り当てようとしている文字列の一部として認識します。

于 2013-01-13T16:26:20.013 に答える