我正在努力弄清楚如何有效地解决这个问题.让我来描述一下:
"一个努力工作的妈妈为她的3个孩子Amelia,Jessica和Bruno购买了几种具有不同营养价值的水果.两个女孩都超重,而且非常恶毒,总是让可怜的布鲁诺一无所有,所以他们的母亲决定分享这些食物.方式如下:
注意:原始问题的描述不同,但想法是一样的,我不希望我的同学在谷歌寻求帮助时找到这篇文章.
我老师给出的一个测试用例如下:
The fruit list has the following values { 4, 2, 1, 8, 11, 5, 1}
Input:
7 -----> Number of Fruits
4 2 1 8 11 5 1 ----> Fruits Nutritional Values
Output:
1 11 ----> One fruit, their nutritional values sum for Amelia
5 ----> Position of the fruit in the list
3 11 ----> Three fruits, their nutritional values sum for Jessica
1 2 6 ----> Position …Run Code Online (Sandbox Code Playgroud) 对 performSelector 的结果进行 float / double / CGFloat 转换会发生一种非常奇怪的行为:
为什么这样做?
BOOL property = (BOOL)[self.object performSelector:@selector(boolProperty)];
NSInteger property = (NSInteger) [self.object performSelector:@selector(integerProperty)];
Run Code Online (Sandbox Code Playgroud)
而这并没有
CGFloat property = (CGFloat) [self.object performSelector:@selector(floatProperty)];
Run Code Online (Sandbox Code Playgroud)
起初我试图这样做:
CGFloat property = [[self.object performSelector:@selector(floatProperty)] floatValue];
Run Code Online (Sandbox Code Playgroud)
但我最终收到了 EXC_BAD_ACCESS 运行时错误。我已经想出了解决这个问题的方法,但我想了解为什么它适用于 Integer 和 Bool 而不是浮点类型。
我的黑客:
@implementation NSObject (AddOn)
-(CGFloat)performFloatSelector:(SEL)aSelector
{
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[[self class] instanceMethodSignatureForSelector:aSelector]];
[invocation setSelector:aSelector];
[invocation setTarget:self];
[invocation invoke];
CGFloat f = 0.0f;
[invocation getReturnValue:&f];
return f;
}
@end
Run Code Online (Sandbox Code Playgroud)
然后:
CGFloat property = [self.object performFloatSelector:@selector(floatProperty)];
Run Code Online (Sandbox Code Playgroud) 在正则表达式方面,我真的是一个n00b.我一直试图在任何地方拆分字符串[----anything inside-----].
string s = "Hello Word my name_is [right now I'm hungry] Julian";
string[] words = Regex.Split( s, "------");
Run Code Online (Sandbox Code Playgroud)
结果将是 "Hello Word my name_is "和" Julian"