2009-10-21 27 views
5

Tôi nhận được một cảnh báo về dòng này trong phần đầu của tôi, nhưng tôi đang sử dụng các biến lớp học trong việc thực hiện của tôi (trong cả hai phương pháp lớp học và phương pháp chẳng hạn):Tại sao Xcode báo cáo cảnh báo "được xác định nhưng không được sử dụng" cho biến lớp của tôi?

#import <UIKit/UIKit.h> 

static NSMutableArray *classVar; // Xcode warning: 'classVar' defined but not used 

@interface MyViewController : UIViewController { 
+0

Bạn sẽ cần phải có mã hơn, nơi bạn sử dụng nó, v.v. – MarkPowell

+0

Bạn cũng có thể cho biết cách bạn đang sử dụng nó trong quá trình triển khai không? – cdespinosa

+1

Xóa hoặc sử dụng biến và cảnh báo sẽ biến mất. – Steven

Trả lời

14

Biến này không phải là một biến lớp/trường hợp. Mỗi khi tệp tiêu đề được đưa vào tệp .m, trình biên dịch tạo một biến tĩnh mới với phạm vi giới hạn đối với tệp bao gồm tiêu đề này. Nếu bạn đang cố gắng để có được một biến cấp lớp, hãy di chuyển khai báo đến đầu tệp .m tương ứng.

+0

ví dụ tại đây: http://wiki.gonzofamily.com/a/NSNotification_usage – mattorb

3

Bạn đã đặt classVar bên ngoài định nghĩa giao diện . Điều này sẽ làm cho trình biên dịch nghĩ rằng bạn đang khai báo một biến toàn cầu, và vì nó trông giống như nó là một tệp tiêu đề (.h) nó cũng sẽ được tạo trong tất cả các tệp bao gồm tệp tiêu đề này. Tôi đoán cảnh báo sẽ xuất hiện khi biên dịch một tệp khác ngoài MyViewController.m bao gồm tệp tiêu đề này.

EDIT Đề nghị của tôi là bạn di chuyển classVar vào file .m cho MyViewController (miss-giải thích những gì bạn nơi sau đầu tiên)

+0

nhưng sau đó bạn không thể sử dụng nó trong các tập tin m khác. – malhal

6

Biến số static có phạm vi tệp. Vì Xcode không thể tìm thấy biến được sử dụng trong tệp đó, nó sẽ thấy một biến không sử dụng. Nếu bạn thực sự muốn biến có thể truy cập được từ toàn bộ chương trình của bạn, hãy làm cho rằng một khai báo biến extern và định nghĩa nó trong việc thực hiện của bạn. Nếu nó chỉ có nghĩa là để được sử dụng bởi lớp đó, chỉ cần di chuyển biến tĩnh vào tệp triển khai của bạn.

0

Dưới đây là cách chính xác để làm điều này:

Trong .h

extern NSString *const DidAddRecordNotification; 

Trong .m

NSString *const DidAddRecordNotification = @"DidAddRecordNotification"; 
Các vấn đề liên quan