

※以前掲載した「Expected ';' at end of declaration list
というエラーが解決できません。」という質問にご返答をいただき、修正後に新たなエラーが発生したため質問内容を編集いたしました※

Objective-Cで、Collection element of type 'void _' is not an Objective-C
objectエラーが解決できません。  
該当箇所は「NSArray_ _lines = @[@"A", @"B", @"C", nil]」です。  
原因がお分かりになる方ご教授いただけると幸いです。

[code]

    #import "ThirdViewController.h"
    
    @interface ThirdViewController ()
    
    @end
    
    const int ChangeCheckCell = 1;
    NSMutableArray* checkboxArray;
    NSArray* _lines = @[@"A", @"B", @"C", nil];
    
    @implementation ThirdViewController {
    
    }
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    
[/code]


CC BY-SA 4.0
2021-08-17T14:35:15.780
80875
2021-08-19T22:40:21.540
2021-08-19T13:16:25.243
47260
47260
question
ios xcode objective-c
Collection element of type 'void *' is not an Objective-C objectというエラーが解決できません。（旧タイトル；Expected ';' at end of declaration list というエラーが解決できません。）


根本の問題は

[code]

    NSArray* _lines = @[@"A", @"B", @"C", nil];
    
[/code]

の最後のセミコロンがない事です。ただし、変数を宣言、初期化している場所もよろしくないので、多分、書きたいコードは以下のようになるでしょう。

[code]

    #import "ThirdViewController.h"
    
    @interface ThirdViewController ()
    
    @end
    
    const int ChangeCheckCell = 1;
    NSMutableArray* checkboxArray;
    NSArray* _lines = @[@"A", @"B", @"C", nil];　　　　　　
    
    @implementation ThirdViewController
    
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    
[/code]

`@implementation`から`@end`までの間に、関数の内部で無い変数宣言は出来ません。  
`ThirdViewController`クラスのメンバーでない`ThirdViewController.m`の中でだけ見える変数を宣言したいのであれば、`@implementation`の外に書くべきです。

また、もし、`checkboxArray`と
`_lines`がクラスのメンバーである場合は、変数宣言は、`ThirdViewController.h`の`@interface`から`@end`の間に宣言を書き、変数の初期化を`viewDidLoad`の中で行うと良いでしょう。

修正後の質問については

`@implementation ThirdViewController`の後ろの`{}`が余計だからです。


CC BY-SA 4.0
2021-08-18T02:55:58.813
80883
2021-08-19T22:40:21.540
2021-08-19T22:40:21.540
14745
14745
80875
answer