小编The*_*mer的帖子

如何获取NSArray的最后一个对象

所以我有一个数组,其中的项目数量可能会有所不同.我想知道无论如何我能得到最后一个对象NSArray?我确实想过一个int计数器来跟踪数组中的项目数量,但这看起来太麻烦了.

有谁知道这比这更好吗?

cocoa objective-c nsarray

42
推荐指数
3
解决办法
4万
查看次数

为什么在我们可以使用NSObject时使用id?

我知道当我们想要创建一个未知值对象时,我们使用id.但是,我很好奇为什么Apple选择id在运行时决定它的值,当每个对象都是NSObject的子类时.所以id delegate我们可以使用而NSObject *delegate 不是有人知道为什么吗?谢谢.

polymorphism cocoa types class objective-c

37
推荐指数
2
解决办法
7027
查看次数

归一化价值意味着什么?

我目前正在研究OpenGL中的照明,它使用GLSL中的一个函数,称为normalize.根据OpenGL文档,它说它"计算两个向量的标准化乘积".但是,它仍然无法解释"正常化"的含义.我已经尝试过在Google上查找标准化产品,但我似乎无法找到任何相关信息.任何人都可以解释正常化的含义并提供一些标准化值的例子吗?

opengl glsl normalization

37
推荐指数
2
解决办法
3万
查看次数

initWithFrame没有被调用,但是awakeFromNib是

我试图继承NSOutlineView.这是我的代码:

OutlineViewSublcass.h:

#import <Cocoa/Cocoa.h>

@interface OutlineViewSubclass : NSOutlineView {

}

@end
Run Code Online (Sandbox Code Playgroud)

OutlineViewSubclass.m:

#import "OutlineViewSubclass.h"

@implementation OutlineViewSubclass

- (id)initWithFrame:(NSRect)frame
{
    self = [super initWithFrame:frame];
    printf("debug A\n");
    return self;
}

- (void)awakeFromNib
{
    printf("debug B\n");
}

@end
Run Code Online (Sandbox Code Playgroud)

调试输出是:

debug B
Run Code Online (Sandbox Code Playgroud)

为什么不(id)initWithFrame:(NSRect)frame被召唤?

cocoa

29
推荐指数
2
解决办法
2万
查看次数

如何实现NSFastEnumeration协议?

我有一个班级,我希望我的班级确认NSFastEnumeration协议.我已阅读文档,但不是很清楚.有人可以告诉我协议方法应该返回什么以及它是如何工作的?

cocoa objective-c fast-enumeration

22
推荐指数
1
解决办法
6462
查看次数

如何在使NSTimer失效后"验证"它?

所以基本上,我有这个计时器,它应该在收到一个键事件时重复,并在用户释放键时失效.但是,即使通过调用addTimer:forMode:NSRunLoop ,我也无法"验证"计时器.有谁知道为什么会发生这种情况以及如何解决这个问题?谢谢.

cocoa objective-c nstimer nsrunloop

21
推荐指数
2
解决办法
1万
查看次数

Xcode 4和BWToolKit

我们可以在Xcode 4中使用BWToolKit或任何其他IB插件吗?

我的旧项目使用BWToolKit,现在我无法在没有Interface Builder的情况下打开它.

xcode cocoa objective-c bwtoolkit xcode4

17
推荐指数
1
解决办法
6274
查看次数

将NSRect保存到NSUserDefaults

目前我正在尝试将NSRect保存到我的用户默认值.现在我正在使用NSValue将其包装为对象,然后使用以下代码将其保存为用户默认值作为对象

[userDefaults setObject:[NSValue valueWithRect:rect forKey:@"Key"]];
Run Code Online (Sandbox Code Playgroud)

但是,当我运行它时,我收到一个错误,上面写着[NSUserDefaults setObject:forKey:]:尝试插入类'NSConcreteValue'的非属性值'NSRect:{{0,0},{50,50}}' .

有谁知道我怎么解决这个问题?谢谢.

cocoa objective-c nsuserdefaults

9
推荐指数
2
解决办法
5155
查看次数

带有实例变量的NSString

所以,我想将一个实例变量放入NSString中,如下所示:

NSString*theAnswer =(@"答案是%@ \n",self.answer);

我不确定我是对还是不对.我认为NSString会像NSLog一样工作,但显然它没有.

theAnswer只返回实例变量而没有"答案是"

有人能告诉我为什么以及如何解决这个问题?

谢谢.

objective-c nsstring

7
推荐指数
1
解决办法
8823
查看次数

如何在 OpenGL 3.2 中使用 GL_TEXTURE_2D_ARRAY

所以我尝试遵循文档,但是我似乎无法让纹理二维数组工作。

-(GLint)buildTextureArray:(NSArray *)arrayOfImages
{
    GLImage *sample = [GLImage imageWithImageName:[arrayOfImages objectAtIndex:0] shouldFlip:NO]; //Creates a sample to examine texture width and height
    int width = sample.width, height = sample.height;
    GLsizei count = (GLsizei)arrayOfImages.count; 

    GLuint texture3D;
    glGenTextures(1, &texture3D);
    glBindTexture(GL_TEXTURE_2D_ARRAY, texture3D);

    glPixelStorei(GL_UNPACK_ROW_LENGTH, width);
    glPixelStorei(GL_UNPACK_ALIGNMENT, 1);

    glTexParameteri(GL_TEXTURE_2D_ARRAY,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR);
    glTexParameteri(GL_TEXTURE_2D_ARRAY,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D_ARRAY,GL_TEXTURE_WRAP_S,GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D_ARRAY,GL_TEXTURE_WRAP_T,GL_REPEAT);
    glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA8, width, height, count, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, NULL);

    int i = 0;
    for (NSString *name in arrayOfImages) //Loops through everything in arrayOfImages
    {
        GLImage *image = [GLImage imageWithImageName:name shouldFlip:NO]; //My own …
Run Code Online (Sandbox Code Playgroud)

opengl textures glsl

6
推荐指数
1
解决办法
1万
查看次数