小编jon*_*dep的帖子

转换为(id <protocol>)以保证属性存在

如果我有一些类似的课程

@property (nonatomic, retain) NSString* myString;
Run Code Online (Sandbox Code Playgroud)

并且想要在作为这些类之一的对象中访问该属性(但不知道它是哪个类型id),我显然得到"请求成员'myString'而不是结构或联合"错误.

所以,如果这些类中的每一个都符合:

@protocol myProtocol <NSObject>

@required

@property (nonatomic, retain) NSString* myString;

@end
Run Code Online (Sandbox Code Playgroud)

然后我像这样投下来获得财产:

(id<myProtocol>)anObject.myString
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?我仍然得到同样的错误.

protocols objective-c

15
推荐指数
2
解决办法
6632
查看次数

没有textview的iphone键盘

是否可以在没有textview的iPhone应用程序中调出键盘?或者我必须有一个看不见的textview?

如果是这样,你如何以编程方式创建文本视图,然后调出键盘(用户不必点击文本视图)?我能找到的唯一例子是使用界面构建器..

iphone keyboard iphone-softkeyboard

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

金属中同时有纹理和无纹理,具有多重混合

我正在金属中绘制 2 个不同的顶点缓冲区,一个带有纹理(忽略顶点颜色数据),另一个没有纹理(纯粹绘制顶点颜色数据):

let commandBuffer = self.commandQueue.makeCommandBuffer()
let commandEncoder = commandBuffer.makeRenderCommandEncoder(descriptor: rpd)

//render first buffer with texture
commandEncoder.setRenderPipelineState(self.rps)
commandEncoder.setVertexBuffer(self.vertexBuffer1, offset: 0, at: 0)
commandEncoder.setVertexBuffer(self.uniformBuffer, offset: 0, at: 1)
commandEncoder.setFragmentTexture(self.texture, at: 0)
commandEncoder.setFragmentSamplerState(self.samplerState, at: 0)
commandEncoder.drawPrimitives(type: .triangle, vertexStart: 0, vertexCount: count1, instanceCount: 1)


//render second buffer without texture
commandEncoder.setRenderPipelineState(self.rps)
commandEncoder.setVertexBuffer(self.vertexBuffer2, offset: 0, at: 0)
commandEncoder.setVertexBuffer(self.uniformBuffer, offset: 0, at: 1)
commandEncoder.setFragmentTexture(nil, at: 0)
commandEncoder.drawPrimitives(type: .triangle, vertexStart: 0, vertexCount: count2, instanceCount: 1)

commandEncoder.endEncoding()
commandBuffer.present(drawable)
commandBuffer.commit()
Run Code Online (Sandbox Code Playgroud)

着色器看起来像这样:

#include <metal_stdlib>
using namespace metal;

struct Vertex …
Run Code Online (Sandbox Code Playgroud)

ios swift metal metalkit

5
推荐指数
1
解决办法
1450
查看次数

Unity WebGL 构建中的 Firebase

有没有办法在 Unity WebGL 项目中使用实时数据库?

如果我理解正确,数据库统一 SDK 将工作,但不是 auth SDK,是吗?(为什么会这样,在不久的将来它可能会改变吗?)我能看到的替代方案是:

1) 使用 REST API 进行身份验证(我仅使用 WWW 类就可以统一工作),但是我看不到使用从 REST API 收到的身份验证令牌对数据库 SDK 进行身份验证的方法.

2) 编写一个使用 javascript SDK 的 WebGL 插件。这会起作用吗?这可能需要很多额外的工作,如果您还进行 iOS/Android 构建,则必须检查您使用的平台等。

unity-game-engine firebase unity-webgl

5
推荐指数
1
解决办法
1284
查看次数

界面构建器自定义nsview向父级发送操作

我在解决如何获得自定义nsview以告知我的主控制器类发生了什么问题时遇到了问题.

控制器类有一个mapView实例,如下所示:

IBOutlet MapView *mapView;
Run Code Online (Sandbox Code Playgroud)

这是通过界面构建​​器实例化的,在我的mapView类中,我得到的鼠标点击如下:

- (void)mouseDown:(NSEvent *)theEvent { //whatever...
Run Code Online (Sandbox Code Playgroud)

但是当发生这种情况时,需要在控制器类中更改一个或两个变量 - 我该怎么做?

objective-c interface-builder

4
推荐指数
1
解决办法
1150
查看次数