小编gar*_*uan的帖子

Objective C类定义混乱

我正在通过Cocoa学习Objective-C(而且喜欢它).我正在关注一个教程.这是一个名为Menu的类,界面看起来像这样.

@interface Menu: MenuObject {}
@end

@interface MenuLayer : LayerObject {}
-(void) someMethod:(id)sender
-(void) someOtherMethod:(id)sender
@end
Run Code Online (Sandbox Code Playgroud)

并且实现遵循相同的约定

@implementation Menu
    -(id)init{
        // blah blah blah
    }
@end

@implementation MenuLayer
    // init, someMethod and someOtherMethod stuff here
@end
Run Code Online (Sandbox Code Playgroud)

对我来说,看起来像是在同一个文件中定义和实现了两个独立的对象/类.这样做是否有理由?如果我将.h和.m文件拆分为Menu.h/.m和MenuLayer.h/.m,结果是否相同?还是我误解了一些基本的东西?

cocoa object objective-c

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

父母的正确用语是什么?

在Actionscipt中,Parent表示包含实例的对象.因此,如果汽车有一个轮子,轮子可以告诉汽车向前移动

parent.moveForward

但是,在Obj-C中,parent指的是超类(不确定为什么他们有super和parent意思相同的东西).

我找不到任何等效于Action-script样式的父类,但后来我真的不知道该找什么.有没有一种简单的方法在Obj-C中执行此操作,或者在创建实例时是否必须手动传递对实例的引用?我已经尝试了这个并且它引发了一个错误,但由于我是Obj-C的新手,我只是想确保我采取正确的行动方案.

objective-c

5
推荐指数
2
解决办法
6926
查看次数

有没有办法确定点击了哪个Google地图标记?

下面的代码循环遍历json对象以在google地图上放置标记.哪个工作正常.

function displayMarkers(data){
    for(var i = 0; i < data.Lat.length; i++){
        var point = new GLatLng(data.Lat[i],data.Lng[i]);
        marker = new GMarker(point);
        map.addOverlay(marker);

            // here's the problem
        GEvent.addListener(marker, "click", function(){
            alert(data.Name[i]);
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,每个标记总是以"i"的最后一个值响应.我一直试图找出一种方法来识别已被点击的标记,以某种方式从数据对象中获取正确的信息.

我正在考虑在创建时创建一个标记数组,以根据标记位置进行循环,但这对我来说效果真的很低.

任何帮助,一如既往,非常感谢.

javascript google-maps google-maps-markers

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

是否有Quartz 2D的包装器/框架/库

有没有人知道Quartz2d(iOS部署)的任何包装器/框架/库,这样可以更容易/更快地完成一些更重复的东西,比如绘制圆形,矩形,翻译"画布"等等.

在我孩子般的乌托邦梦想世界里,我想象着像RaphaelJS这样的东西

我一直在谷歌上搜索,但如果确实存在某些内容,则无法找到合适的搜索字符串.

quartz-graphics

5
推荐指数
0
解决办法
143
查看次数

我应该使用哪个地球半径来计算两极之间的距离?

我正在监视一个GPS装置,该装置正在从加拿大的Cape Discovery到北极。我需要跟踪每天行进的距离和剩余的距离,因此我使用的是Haversine公式,它被告知对于较小的距离非常准确。

我真的坏数学,但我有一个鬼鬼祟祟的怀疑,精度在很大程度上取决于地球的半径,因为宇宙决定让出地球扁球形的,我有一个近似的选择,为地球半径从中选择。

由于我正在监视非常接近北极的坐标,因此我想知道是否有人知道哪个半径将提供最高精度。

  • 平均赤道:6,378.1370km
  • 平均极坐标:6,356.7523
  • 官方/体积:6,371km
  • 经络:6367km

还是任何其他人都知道的半径?

我希望一些数学或制图专家可能知道答案。

geolocation cartography haversine

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

为什么页面宽度会影响Firefox中的"margin-top:50%"?

在这个JSFiddle中

http://jsfiddle.net/9UMRk/

div的保证金最高可达50%.我希望调整到页面高度.

但是,如果您在Firefox(3和4)中调整窗口大小,您将看到div的垂直位置受页面宽度的影响,但不受页面高度的影响.

为什么?

html css firefox

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

为什么我的JavaScript对象属性被其他实例覆盖?

我创建了一个像下面这样的对象.

var BaseObject = function(){

var base = this;
base.prop;

base.setProp = function(val){
    base.prop = val;
}
}
Run Code Online (Sandbox Code Playgroud)

当我调用该setProp方法时,我得到以下内容.

var a = new BaseObject();
var b = new BaseObject();           

a.setProp("foo");
b.setProp("bar");

console.log(a.prop); // outputs 'foo'
console.log(b.prop); // outputs 'bar'
Run Code Online (Sandbox Code Playgroud)

然后我创建了另一个继承自BaseObject这样的对象.

var TestObject = function(){
    // do something
}

TestObject.prototype = new BaseObject();
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我得到了一个我没想到的结果.

var a = new TestObject();
var b = new TestObject();

a.setProp("foo");
b.setProp("bar");

console.log(a.prop); // outputs 'bar'
console.log(b.prop); // outputs 'bar'
Run Code Online (Sandbox Code Playgroud)

我不知道为什么.我最近一直在阅读很多关于闭包和原型继承的内容,我怀疑我已经把它弄得一团糟.因此,非常感谢任何有关此特定示例为何如此工作的指针.

javascript oop inheritance

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

是否有一种绘制"弹性"线的常用技术

我试图找出如何在iPhone上的openGL/Cocos2d中的两点之间绘制弹性/弹性线.像这样的东西

在此输入图像描述

随着线条变长,"乐队"越来越薄.iOS使用与我在Mail.app中瞄准的相同技术,拉动刷新.

首先,有这样一个名字吗?

我的第一个想法是根据两者之间的角度在起点和终点圆的半径上绘制一个点,并使用距离/ 2作为控制点绘制二次贝塞尔曲线.但我不是数学专家,所以我正在努力弄清楚如何放置控制点来调整路径的厚度.

但更大的问题是我需要用一种颜色填充形状,就我所知,这似乎不可能使用OpenGL贝塞尔曲线,因为曲线似乎不是可以形成的形状的一部分填充.

所以我看了使用一个使用点阵创建的样条曲线,但这开启了一个全新的数学痛苦世界,因为我必须弄清楚路径边缘的所有点.

所以在我走下那个兔子洞之前,我想知道我有什么比这更简单的东西,或者是否有人可以指出我最有效的技术.

opengl-es cocos2d-iphone

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

是否可以使用Cocoa WebView使用的Javascript引擎更改?

我正在研究一个html/javascript + cocoa混合应用程序.据我所知,Cocoa的WebView使用与Safari(Nitro)相同的JavaScript引擎.

然而,在V8 JS引擎(Chrome使用)中有一些东西可能是不错的奢侈品.由于Chrome和Safari都是基于Webkit的,我想知道是否有可能为可可WebView更改用于V8的Nitro for swap?

cocoa javascript-engine webview

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

如何创建一个仅在有订阅者时触发的 Observable,并立即为新订阅者提供最新值

我正在尝试创建一个流/可观察的......

  1. 仅在有订阅者时输出事件
  2. 为任何新订阅者提供最新值。

具体的情况是,我需要一个可观察对象,它可以在特定事件发生时进行异步 API 调用,但前提是它有订阅者。我试图避免不必要的 API 调用。

我已经设法创建了一个只有在有这样的订阅者时才会触发的流......

let dataStream = Rx.Observable
   .interval(1000) // Fire an event every second
   .singleInstance() // Only do something when we have subscribers
   .startWith(null) // kick start as soon as something subscribes
   .flatMapLatest(interval => SomeAPI.someDataGet()) // get data, returns a promise
Run Code Online (Sandbox Code Playgroud)

这有效。如果我console.log(...)SomeAPI.someDataGet方法中,我只会看到它在流有订阅者时触发。我的实现看起来非常好,因为我这样做是为了订阅和取消订阅,这非常适合 React 组件生命周期方法。

let sub1;
sub1 = dataStream.subscribe(x => console.log('sub1', x));
sub1.dispose();
Run Code Online (Sandbox Code Playgroud)

我还希望任何新订阅者在订阅时立即收到最新值。这是我挣扎的地方。如果我这样做...

let sub1, sub2;
sub1 = dataStream.subscribe(x => console.log('sub1', x));

setTimeout( () => {
    sub2 = dataStream.subscribe(x …
Run Code Online (Sandbox Code Playgroud)

javascript frp reactive-extensions-js rxjs

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