这可能是一个愚蠢的问题,但我需要为自己提出并清楚这一点.
要将块提交到队列以供执行,请使用函数dispatch_sync
和dispatch_async
.它们都将队列和块作为参数.dispatch_async
立即返回,异步运行块,同时dispatch_sync
执行块直到提供的块返回.以下是一些情况:
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0ul);
dispatch_async(queue, ^{
[self goDoSomethingLongAndInvolved];
dispatch_async(queue, ^{
NSLog(@"this is statement1");
});
});
Run Code Online (Sandbox Code Playgroud)
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0ul);
dispatch_sync(queue, ^{
[self goDoSomethingLongAndInvolved];
dispatch_sync(queue, ^{
NSLog(@"this is statement1");
});
});
Run Code Online (Sandbox Code Playgroud)
{
[super viewDidLoad];
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0ul);
dispatch_async(queue, ^{
[self goDoSomethingLongAndInvolved];
dispatch_sync(queue, ^{
NSLog(@"this is statement1");
});
});
Run Code Online (Sandbox Code Playgroud)
{
[super viewDidLoad];
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0ul);
dispatch_sync(queue, ^{
[self goDoSomethingLongAndInvolved];
dispatch_async(queue, ^{
NSLog(@"this …
Run Code Online (Sandbox Code Playgroud) iphone objective-c grand-central-dispatch ios objective-c-blocks
我们如何识别任何特定对象是否有块?
例如,
NSSet *set =[NSSet setWithObjects:
@"name1",
@"name2",
[^{ /* ..... some code */ } copy],
nil];
Run Code Online (Sandbox Code Playgroud)
我们怎样才能找出set中的哪个对象是一种块?
它是确定有在HTML5头标记中的段落元素?
换句话说:这个标记在HTML5中是否正确?使用它有什么缺点?
<h1>
<p class="major">Major part</p>
<p class="minor">Minor part</p>
</h1>
Run Code Online (Sandbox Code Playgroud)
如果没有,我如何正确地使用CSS设置这些元素的样式?
我希望在不调整图像大小的情况下显示尺寸大于设备屏幕的图像.它必须以屏幕为中心.我怎样才能做到这一点?
我一直试图找出glTexImage2D
工作方式,并从一些非常清晰的代码中看到一些奇怪的结果.我的代码简单地将粗略的圆圈绘制成256*256长度的无符号数组,然后将该数据发送出去以成为纹理.然而,无论我在图像创建循环中选择何种组合,显示的纹理都会变成红色和橙色的变化:
unsigned* data = new unsigned[256*256];
for (int y = 0; y < 256; ++y)
for (int x = 0; x < 256; ++x)
if ((x - 100)*(x - 100) + (y - 156)*(y - 156) < 75*75)
data[256*y + x] = ((156 << 24) | (256 << 16) | (156 << 8) | (200 << 0));
else
data[256*y + x] = 0; // I'd expect this to be transparent and the above to be slightly transparent and …
Run Code Online (Sandbox Code Playgroud) 我正在使用OpenGL ES 2.0为嵌入式设备开发应用程序.
这是我的片段着色器:
varying vec2 v_texCoord;
uniform sampler2D s_texture;
void main() {
gl_FragColor = texture2D(s_texture, v_texCoord);
}
Run Code Online (Sandbox Code Playgroud)
我正确设置了纹理.出于某种原因,调用glTexImage2D
不会产生我正在寻找的结果.纹理完全是黑色的,而不是填充我提供的数据.
这是我创建纹理的方式:
GLuint textureId;
// 2x2 Image, 3 bytes per pixel (R, G, B)
GLubyte pixels[6 * 3] =
{
255, 0, 0, // Red
0, 255, 0, // Green
0, 0, 255, // Blue
255, 255, 0, // Yellow
0, 255, 255,
255, 0, 255
};
// Use tightly packed data
glPixelStorei ( GL_UNPACK_ALIGNMENT, 1 );
// Generate a …
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,用户点击3次,并且点击的3个点将创建一个角度.它完美地绘制了角度.我想在第二次敲击时计算角度,但我认为我做错了(可能是数学错误).我还没有在我的微积分课程中介绍过这个,所以我将在维基百科上找到一个公式.
http://en.wikipedia.org/wiki/Law_of_cosines
这是我正在尝试的:
注意:CGPoints
在用户点击时创建第一,第二和第三.
CGFloat xDistA = (second.x - third.x);
CGFloat yDistA = (second.y - third.y);
CGFloat a = sqrt((xDistA * xDistA) + (yDistA * yDistA));
CGFloat xDistB = (first.x - third.x);
CGFloat yDistB = (first.y - third.y);
CGFloat b = sqrt((xDistB * xDistB) + (yDistB * yDistB));
CGFloat xDistC = (second.x - first.x);
CGFloat yDistC = (second.y - first.y);
CGFloat c = sqrt((xDistC * xDistC) + (yDistC * yDistC));
CGFloat angle = acos(((a*a)+(b*b)-(c*c))/((2*(a)*(b))));
NSLog(@"FULL ANGLE IS: %f, …
Run Code Online (Sandbox Code Playgroud) 我是否必须release
在dealloc
类的方法中调用非指针变量?
例如
@interface myClass : NSObject {
BOOL isDirty; // do i have to release this?
NSInteger hoursSinceStart; // and this?
NSDate *myDate; // i will release the pointer in dealloc
}
@property (assign, nonatomic) NSInteger hoursSinceStart; // property to release?
@property (assign, nonatomic) BOOL isDirty; // property to release?
@end
Run Code Online (Sandbox Code Playgroud)