Titanium SDK 6.1.1.GA 가 릴리즈 되었습니다.


(InGrowth) #1

6.1.0.GA는 좀 많이 뜯어구쳐서 버그가 약간 있었던터라 금방 나왔네요.

이제 6.0.3.GA 앱들 SDK 업데이트 해야겠습니다.


(이종은(Jong Lee)) #2

역시 대부분 최소한 x.x.1이 나와야 써볼만 ㅋ


(이종은(Jong Lee)) #3

저는 맥북프로 디자인이 바뀌면 첫번째 버전을 썼는데 같은 맥락에서 바로 그 다음버전을 노렸어야 했는데.ㅠㅠ


(InGrowth) #4

아이폰도, 아이패드도, 맥북도ㅋㅋㅋ 세상의 진리군요.


#5

저는 6.1.1.GA로 빌드하니까 오브젝트 생성하는데 아규먼트가 전달되지 않아서 다시 6.1.0.GA로 내렸습니다.
Appcelerator 버전업은 이미 그다지 신뢰하지 않고 있습니다. ㅎㅎㅎ

		myobj.init({
			arg:	true,
		});

이런 코드를 사용 중인데, 에러가 나서 디버깅해보니 arg에 undefined가 넘어오네요.
6.1.0.GA에서는 정상 동작합니다.


(이종은(Jong Lee)) #6

뭔가 너무 이상하고 심각한 문제네요. alloy 버전 어떻게 되나요?


#7

Alloy는 사용하지 않고 예전에 Classic 프로젝트로 생성한 것인데요,
안드로이드 릴리즈 버전에서 특정 경우에만 나타나는 현상인 것 같습니다.
모든 경우에 발생하는 에러는 아니고, 에러가 나는 지점에서만 항상 에러가 발생하고 있습니다.
릴리즈 버전에서만 발생하는 것으로 봐서는 minification 된 코드에서 문제가 발생하는 것 같기도 합니다.


(InGrowth) #8

저도 6.1.1에서 비슷한 에러를 겪었습니다.

패턴이 동일한 변수이름을 할당한 object를 여러곳에서 썼을때 그랬어요.

function A() {
  var a = {...}.
  return a.init();
}

function B() {
  var a = {...}.
  return a.init();
}

이런 패턴일 때 minify를 거치면, B 함수쪽의 a가 void 0가 되는 케이스였습니다.
생각해보면 es5에서 함수안에서 명명한 var는 global context이기 때문에 저런 패턴으로 코딩하면 안되는거죠…

그래서 A와 B안의 구문을 즉시실행함수로 변경해서 context를 분리해서 해결했습니다.


#9

함수 내에서 var로 선언한 변수가 global이 되는 것은 C 언어 계열에서 기본적으로 보장하는 "변수 지역성"에 위배되는 것이 아닌가요?

만약 말씀하신대로 동작한다면 프로그래머를 상당히 혼란스럽게 하는 문법이 아닐까 생각합니다. ^^


(InGrowth) #10

맞아요. js는 private가 없으니까요. 개떡같이 동작하죠ㅋㅋㅋㅋ
js는 c계열이 아니고 lisp에서 시작된거라고 알고 있습니다.


#11

오늘 또 하나 배우네요,
좋은 정보 감사합니다. ^^