Objective c 如何在objective C中将方法转换为宏
我有一种方法,基本上是将字母添加到数组中的内容中(演示) 我有两个疑问:Objective c 如何在objective C中将方法转换为宏,objective-c,c,macros,Objective C,C,Macros,我有一种方法,基本上是将字母添加到数组中的内容中(演示) 我有两个疑问: 是否可以将任何方法转换为宏 将函数转换为宏时是否有一般的经验法则 我已经看过其他方法,但即使在它们的解决方案中,当我尝试使用do循环解决方案将此方法转换为宏时,也会出现错误 你是说C宏吗 #define macro_name(array, addedLetterArray, str) \ [(array) enumerateObjectsUsingBlock:^(
#define macro_name(array, addedLetterArray, str) \
[(array) enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { \
[(addedLetterArray) addObject:[NSString stringWithFormat:(str), obj]]; \
}];
- (NSMutableArray *) addTheLetterZ:(NSArray *)array {
NSMutableArray *addedLetterArray = [[NSMutableArray alloc] init];
macro_name(array, addedLetterArray, @"%@ Y")
macro_name(array, addedLetterArray, @"%@ Z")
return addedLetterArray;
}
对吗?你是说C宏吗
#define macro_name(array, addedLetterArray, str) \
[(array) enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { \
[(addedLetterArray) addObject:[NSString stringWithFormat:(str), obj]]; \
}];
- (NSMutableArray *) addTheLetterZ:(NSArray *)array {
NSMutableArray *addedLetterArray = [[NSMutableArray alloc] init];
macro_name(array, addedLetterArray, @"%@ Y")
macro_name(array, addedLetterArray, @"%@ Z")
return addedLetterArray;
}
对吗?您发布的链接是编写多行宏的正确方法。回答您的问题:
void AddLetterToArray(NSArray *array, NSMutableArray *addedLetterArray, NSString *aLetter)
{
[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[addedLetterArray addObject:[NSString stringWithFormat:@"%@ %@", obj, aLetter]];
}];
}
- (NSMutableArray *) addTheLetterZ:(NSArray *)array {
NSMutableArray *addedLetterArray = [[NSMutableArray alloc] init];
AddLetterToArray(array, addedLetterArray, @"Y");
AddLetterToArray(array, addedLetterArray, @"Z");
// ...
return addedLetterArray;
}
您发布的链接是编写多行宏的正确方法。回答您的问题:
void AddLetterToArray(NSArray *array, NSMutableArray *addedLetterArray, NSString *aLetter)
{
[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[addedLetterArray addObject:[NSString stringWithFormat:@"%@ %@", obj, aLetter]];
}];
}
- (NSMutableArray *) addTheLetterZ:(NSArray *)array {
NSMutableArray *addedLetterArray = [[NSMutableArray alloc] init];
AddLetterToArray(array, addedLetterArray, @"Y");
AddLetterToArray(array, addedLetterArray, @"Z");
// ...
return addedLetterArray;
}
看来你是对的,我使用的宏不正确。你提供的链接很有用。看来你是对的,我使用的宏不正确。你提供的链接很有用