考虑以下代码:
int a = 5;
if (a == 5 || a == 10)
doSomething();
Run Code Online (Sandbox Code Playgroud)
在这种情况下a是5所以第一个条件是真的.程序是否会检查第二个条件是否为真,或者在确定第二个条件确实为5 doSomething()后立即开始执行a?
使用宏NSLocalizedString和AMLocalizedString有什么区别?
请考虑以下代码:
在第一个中,我调用一个创建动画的函数.我以一定的时间间隔做到这一点:
start:;
[self animationMethod];
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:3]];
//sleep(3);
goto start;
Run Code Online (Sandbox Code Playgroud)
在第二个我创建一个动画
- (void)animationMethod
{
CAKeyframeAnimation *myAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
CGMutablePathRef curvedPath = CGPathCreateMutable();
CGPathMoveToPoint(curvedPath, NULL, start.x, start.y);
CGPathAddCurveToPoint(curvedPath, NULL, fcp.x, fcp.y, scp.x , scp.y, end.x, end.y);
myAnimation.path = curvedPath;
myAnimation.duration = flight_duration;
myAnimation.removedOnCompletion = NO;
myAnimation.delegate = self;
myAnimation.fillMode = kCAFillModeForwards;
[myAnimation setValue:identifier forKey:@"id"];
[flyingBug addAnimation:myAnimation forKey:@"bug_flight"];
CGPathRelease(curvedPath);
}
Run Code Online (Sandbox Code Playgroud)
第三个是委托方法,我用来检查一切正常:
- (void)animationDidStart:(CAAnimation *)anim
{
NSLog(@"ANIMATION DID START");
}
Run Code Online (Sandbox Code Playgroud)
因此,当我使用NSRunLoop它工作正常时,调用委托方法,但如果我尝试使用sleep(3)函数,那么委托方法不会被调用.
我的问题:
1)你能解释一下NSRunLoop和sleep()之间的区别吗?为什么在使用sleep()时不调用委托方法?
2)也许第三种可能的方法更好用?
我刚刚开始使用Android开发.我有一个非常简单的按钮,如下所示:
<Button
android:id="@+id/howItWorksButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="58dp"
android:text="@string/how_it_works_button_title" />
Run Code Online (Sandbox Code Playgroud)
在代码中我为它设置了背景颜色:
howItWorksButton.setBackgroundColor(Color.RED);
Run Code Online (Sandbox Code Playgroud)
这是onClickListener:
howItWorksButton.setOnClickListener(new OnClickListener()
{
public void onClick(View view)
{
Intent intent = new Intent(MainMenuActivity.this, HowItWorksActivity.class);
MainMenuActivity.this.startActivity(intent);
}
});
Run Code Online (Sandbox Code Playgroud)
问题是,当我点击它时,它看起来并没有被按下,它只是保持原样,没有变化.它的onClick方法工作正常,一切都很好用的功能,但我希望它看起来有所改变,就像所有按钮按下时一样.
看看这段代码:
- (void)drawRect:(CGRect)rect
{
[super drawRect:rect];
CGContextRef context = UIGraphicsGetCurrentContext();
CGSize myShadowOffset = CGSizeMake (-10, 15);
CGContextSaveGState(context);
CGContextSetShadow (context, myShadowOffset, 5);
CGContextSetLineWidth(context, 4.0);
CGContextSetStrokeColorWithColor(context,
[UIColor blueColor].CGColor);
CGRect rectangle = CGRectMake(60,170,200,200);
CGContextAddEllipseInRect(context, rectangle);
CGContextStrokePath(context);
CGContextRestoreGState(context);
}
Run Code Online (Sandbox Code Playgroud)
它所做的就是为这个圆圈绘制一个圆圈和一个阴影。但是我想不通如何只画阴影而不画圆圈?我怎么做?SO上类似问题的答案对我没有帮助
当我启动我的应用程序时,我检查当前位置授权状态如下:
- (void)checkCurrentStatus
{
if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined)
{
[self.locationManager requestWhenInUseAuthorization];
}
else
if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied && ![CLLocationManager locationServicesEnabled])
{
[self.locationManager startUpdatingLocation];
}
}
Run Code Online (Sandbox Code Playgroud)
如果启用整体位置服务(对于整个设备)而不是仅仅要求用户许可,则会弹出警报.如果它们被禁用(否则如果条件),那么我需要调用,startUpdatingLocation因为[self.locationManager requestWhenInUseAuthorization];当授权状态为kCLAuthorizationStatusDenied(没有任何条件)时,调用无效.好的,所以我打电话startUpdatingLocation然后提醒弹出窗口说:
启用位置服务以允许"AppName"确定您的位置
好的,我转到整体位置服务的设置.在那之后授权状态变成kCLAuthorizationStatusNotDetermined但是当我打电话requestWhenInUseAuthorization它没有效果!没有弹出窗口,用户没有提示授权位置,状态保持不变,我无法使用位置管理器.我该怎么处理?
请看一下这段代码:
Card *first = [[Card alloc] initWithFace:@"Ace" andSuit:@"Hearts"];
Card *second = [[Card alloc] initWithFace:@"Ace" andSuit:@"Hearts"];
if ([first isEqual:second])
NSLog(@"Equal");
else
NSLog(@"Not equal"); //WHY???
Run Code Online (Sandbox Code Playgroud)
NSLog告诉我这两个对象不相等.但为什么?我应该怎么做才能使它们平等?
在sizeof()用C经营者给其操作数在编译时的大小.它不评估其操作数.例如,
int ar1[10];
sizeof(ar1) // output 40=10*4
sizeof(ar1[-1]) // output 4
int ar2[ sizeof(ar1) ]; // generate an array of 40 ints.
Run Code Online (Sandbox Code Playgroud)
谈到C++模板类,我发现了一些奇怪的结果.
template<typename T>
struct S{
T a;
};
sizeof( S<int> ) // output 4
sizeof( S<bool> ) // output 1
sizeof( vector<int> ) // output 24
sizeof( vector<char> ) // output 24
sizeof( vector<bool> ) // output 40
Run Code Online (Sandbox Code Playgroud)
我猜sizeofon vector或其他STL容器取决于特定的环境.
问题1.如何sizeof在C/C++中实现?它不能是运行时功能.这是一个宏吗?(我在在线教程vedio中学到的东西).如果它是一个宏,#define它看起来像什么?什么时候sizeof()执行?
问题2.如果我将成员方法添加void f(){}到定义中struct …
我正在寻找一种简单的方法来处理 SKShapeNode 子类中的触摸。为此,我尝试使用touchesBegan,但它不起作用..
class Shape: SKShapeNode {
convenience init(rectOfSize: CGSize, colorOfRectangle rectColor: UIColor) {
self.init()
self.init(rectOfSize: rectOfSize)
self.fillColor = rectColor
self.position = CGPointMake(rectOfSize.width, rectOfSize.height)
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
print("touch")
}
}
Run Code Online (Sandbox Code Playgroud) 请看一下这个简单的Swift代码:
UIView.animate(withDuration: duration, delay: interButtonDelay * Double(expanding ? index : index + 1), options: [], animations: {
button.transform = expanding ? .init(scaleX: self.scale, y: self.scale) : .identity
button.alpha = expanding ? 0.0 : 1.0
}, completion: nil)
Run Code Online (Sandbox Code Playgroud)
这里将一个空数组传递给options参数.我想找出与此相同的正确Objective-C是什么.我认为它应该传递0,但我想完全确定.不幸的是,文档没有说明这一点.
objective-c ×5
ios ×4
iphone ×2
swift ×2
android ×1
button ×1
c ×1
c++ ×1
cocoa ×1
cocoa-touch ×1
localization ×1
nsrunloop ×1
sizeof ×1
skshapenode ×1
sleep ×1
sprite-kit ×1
stl ×1
touchesbegan ×1