سؤال

وأنا جديدة إلى حد ما الهدف جيم وأواجه صعوبة في فهم رسالة تحذير لكتلة التعليمات البرمجية التالية:

void PrintPathInfo() {
    NSString *path = @"~";  
    NSString *message = @"My home folder is: ";

    NSLog([message stringByAppendingString: [path stringByExpandingTildeInPath]]);
}

وهذه هي رسالة تحذير وأنا على الحصول على السطر الأخير (الدعوة إلى NSLog):

warning: format not a string literal and no format arguments

ويمكن للشخص يرجى توضيح؟ هل هذه رسالة تحذير يجب أن أكون قلقا بشأن؟

وشكرا.

هل كانت مفيدة؟

المحلول

والتعليمات البرمجية الخاصة بك يجب أن تعمل على ما يرام، ولكن يمكن يسيئون التصرف إذا كان هناك أي '٪' تنسيق الأحرف في السلسلة التي تم تمريرها - التي يمكن أن نخلط بين NSLog. على سبيل المثال، حاول مبادلة هذا في التعليمات البرمجية:

NSString *message = @"My home %folder is: ";

وNSLog وتفسير ذلك '٪ و "بطريقة سيئة.

ويمكنك تجنب التحذير (والخطر)، وذلك باستخدام سلسلة حرفية مع التنسيق ويمر في سلاسل الخاص بك، مثل هذا:

NSLog(@"%@%@", message, [path stringByExpandingTildeInPath]);

هل يمكن أيضا التحقق من هذا الارتباط:

http://www.cocoabuilder.com/archive / رسالة / الكاكاو / 2009/8/29/243819

وحظا سعيدا!

نصائح أخرى

إذا كنت تريد أن تكتب الإخراج إلى nslog تحتاج إلى شيء من هذا القبيل:

NSLog(@"My home folder is %@",[path stringByExpandingTildeInPath]);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top